// stores/loadingStore.js
import { defineStore } from 'pinia'
import { ElLoading } from 'element-plus'
// import type { LoadingInstance } from 'element-plus'
// 使用正确的类型定义
type LoadingInstance = ReturnType<typeof ElLoading.service>


let loadingInstance: LoadingInstance | null = null // 存储loading实例

export const useLoadingStore = defineStore('loading', {
  state: () => ({
    requestCount: 0 // 请求计数器，用于处理并发请求
  }),
  
  actions: {
    // 显示loading
    showLoading() {
      // 只有当没有请求时才显示loading
      if (this.requestCount === 0) {
        loadingInstance = ElLoading.service({
          lock: true,
          text: '加载中...',
          background: 'rgba(0, 0, 0, 0.7)'
        })
      }
      // 增加请求计数
      this.requestCount++
    },
    
    // 隐藏loading
    hideLoading() {
      // 减少请求计数
      this.requestCount--
      
      // 当所有请求都完成时才隐藏loading
      if (this.requestCount === 0) {
        // 确保loading实例存在
        if (loadingInstance) {
          loadingInstance.close()
          loadingInstance = null
        }
      }
    }
  }
})
